Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: 小麦   发起时间: 2013-07-19 11:29 上午   回复: 2

Print Search
帖子排序:    
   2013-07-19, 11:29 上午
Michael2014 离线,最后访问时间: 2013/7/19 2:55:00 小麦

发帖数前500位
注册: 2013-07-19
发 贴: 2
Stick out tongue [:P] 对于sysenter指令的理解,请张老师指点
Reply Quote
      最近在研读张老师的大作,结合<windows internals>第六版,以及intel官方文档,使我加深了对硬件以及操作系统内部原理的了解。
      我想深入了解一下从用户态的API调用进入到内核的整个过程,目前有一些疑问,请张老师指点:
      一、MSR寄存器:按我看到的资料,应该是Pentium2之后的处理器引入的,到目前为止,以后的处理器不会增加实现MSR的特性——是否就意味着未来的处理器会抛弃这种方式。《软件调试》P42中也写到:[MSR的本义是指这些寄存器与CPU型号有关,还没有正式纳入到IA-32架构中,也有可能不会被以后的CPU所兼容。]。请问我的理解是对的吗?
MSR address range between 40000000H - 400000FFH is marked as a specially reserved range. All existing and
future processors will not implement any features using any MSR in this range.(来自intel文档)
      二、sysenter指令到底干了什么事情?看了intel文档,但是有一些问题还是不太肯定:
      1.sysenter指令会不会产生中断?因为我看完了intel文档,没有说明是否产生中断,只是可以肯定这个指令是为了取代int 2e进入内核而设计,会比int 2e快。如果不会产生中断,那么通过什么机制实现?仅仅是通过改了cs:ip和ss:sp?如果是通过中断,那么中断例程是什么?这比int2e有什么优势?
      2.sysenter会从MSR寄存器指向的地方读取CS,ESP,EIP供进入ring0后使用,但intel文档中写的是4个(黑体字):
      Prior to executing the SYSENTER instruction, software must specify the privilege level 0 code segment and code
entry point, and the privilege level 0 stack segment and stack pointer by writing values to the following MSRs。
      那么,SS到哪里去取?
      
      问题有点多,但目前就卡在这个理解上面了,请张老师帮忙解答下。谢谢!

      另外,我还没有研究中断的处理过程,是不是应该先回头研究一下中断的处理过程?


IP 地址: 已记录   报告
   2013-07-19, 22:28 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 对于sysenter指令的理解,请张老师指点
Reply Quote

问题一,这个名字最初如此,但不可断章取义,书中接着还有“但尽管本意如此...”,另外,新的CPU当然可能继续增加

问题二,8.3.3节有详细介绍,P179-182

 

 


IP 地址: 已记录   报告
   2013-07-19, 22:50 下午
Michael2014 离线,最后访问时间: 2013/7/19 2:55:00 小麦

发帖数前500位
注册: 2013-07-19
发 贴: 2
Embarrassed [:$] Re: 对于sysenter指令的理解,请张老师指点
Reply Quote
谢谢张老师的回复,是我看书还不够仔细。
现在清楚很多了,sysenter的确没有使用中断,SS的值是通过cs+8的位置来获得。
看来还是要更细心。

IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 对于sysenter指令的理解,请张老师指点

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.